ê³ êž ì í ìì€í ì íµíŽ ìì íë¡ê·žëë°ì ìµì²šëšì íííìžì. ìžìŽ ì€ê³ì ì í ìì ì±ìŽ ë€ìí íë«íŒê³Œ ì í늬ìŒìŽì ìì ìì ì ìž ìì ìíížìšìŽë¥Œ 구ì¶íë ë° ìŽë»ê² ì€ìíì§ ìì볎ìžì.
ê³ êž ì í ìì íë¡ê·žëë°: ìžìŽ ì€ê³ ë° ì í ìì ì±
ìì 컎íší ì ìí, ì¬ë£ 곌í, ìžê³µ ì§ë¥ê³Œ ê°ì ë¶ìŒì íëª ì ê°ì žì¬ ê°ë¥ì±ì ê°ì§ê³ ììµëë€. ê·žë¬ë ìì ì ìŽê³ íì¥ ê°ë¥í ìì ìíížìšìŽë¥Œ ê°ë°íë ê²ì ìë¹í 곌ì 륌 ìê³ ììµëë€. Ʞ졎 íë¡ê·žëë° íšë¬ë€ìì ì€ì²© ë° ìœí곌 ê°ì ìì ìì€í ì ê³ ì í í¹ì±ì íŽê²°íë ë° ì¢ ì¢ ë¯ží¡í©ëë€. ìŽë ìì ê³ì°ì ë³µì¡ì±ì íšê³Œì ìŒë¡ êŽëЬí ì ìë ìë¡ìŽ íë¡ê·žëë° ìžìŽ ë° ë°©ë²ë¡ ì ëí í구륌 íìë¡ í©ëë€.
ê°ë ¥í ìì ìíížìšìŽë¥Œ 구ì¶íë ë° ììŽ ì€ìí 잡멎 ì€ íëë ì í ìì ì±ì ëë€. ì í ìì€í ì ê°ì ë¶ë¥íê³ ì°ì°ìŽ ì ì í ë°ìŽí°ì ì ì©ëëë¡ ë³Žì¥íêž° ìí ê³µìì ìž íë ììí¬ë¥Œ ì ê³µí©ëë€. ìì íë¡ê·žëë°ì ë§¥ëœìì ì í ìì€í ì íë¹íž ì€ì©, ìž¡ì ë¶ìŒì¹ ë° ìœí ìë°ê³Œ êŽë šë ì€ë¥ë¥Œ ë°©ì§íë ë° ì€ìí ìí ì í ì ììµëë€. ì í ì í ë° ì¢ ì ì í곌 ê°ì ê³ êž ì í ìì€í ì íì©íšìŒë¡ìš ìì íë¡ê·žëšì ë ì격í ì ìœ ì¡°ê±Žì ì ì©íê³ ìì ì±ì í¥ììí¬ ì ììµëë€.
ìì íë¡ê·žëë°ìì ì í ìì€í ì ì€ìì±
ê³ ì íë¡ê·žëë° ìžìŽë íë¡ê·žëš ëìì ëí ì ì 볎ì¥ì ì ê³µíë ì í ìì€í ì ìŽì ì ì€ë«ëì ëë € ììµëë€. ì í ê²ì¬ë ê°ë° 죌Ʞ ìŽêž°ì ì€ë¥ë¥Œ ê°ì§íì¬ ë°íì ì€íš ê°ë¥ì±ì ì€ìŽë ë° ëììŽ ë©ëë€. ìì íë¡ê·žëë°ììë ìíìŽ íšì¬ ë íœëë€. ìì ê³ì°ì 볞ì§ì ìŒë¡ íë¥ ì ìŽë©° ë žìŽìŠì 믌ê°í©ëë€. ì€ë¥ë ìœê² ì íëìŽ ì못ë 결곌륌 ìŽëí ì ììµëë€. ë°ëŒì ì í ìì€í ì ìŒë°ì ìž íë¡ê·žëë° ì€ì륌 ë°©ì§íë ë° ì€ìí ë³Žíž ê³ìžµì ì ê³µí©ëë€.
ìì íë¡ê·žëë°ìì ì í ìì€í ì 구첎ì ìž ìŽì :
- íë¹íž êŽëЬ: íë¹ížê° ì ì íê² ìŽêž°í, ì¬ì© ë° íŽì ëìŽ ë©ëªšëЬ ëì ëë ììì¹ ëª»í ìíž ìì©ì ë°©ì§í©ëë€.
- ìž¡ì ìŒêŽì±: ìž¡ì ìŽ ì íší êž°ì ìì ìíëê³ ê²°ê³Œê° ì¬ë°ë¥Žê² íŽìëëë¡ ë³Žì¥í©ëë€.
- ìœí ì¶ì : ìëíì§ ìì ìêŽ êŽê³ ëë ëìœíìŽë°ì€ íšê³Œë¥Œ ë°©ì§íêž° ìíŽ íë¹íž ê°ì ìœí êŽê³ë¥Œ 몚ëí°ë§í©ëë€.
- ë³µì êžì§ ì 늬 ì ì©: ìì ìíì ë²ì¹ì ìíŽ êžì§ë ìì ìíì ë¶ë² ë³µì 륌 ë°©ì§í©ëë€.
- ëšìŒ ë³í ê²ìŠ: ìì ê²ìŽíž ë° íë¡ê° ìì ìíì ë žëŠì ì ì§íì¬ ì íší ëšìŒ ë³íì ëíëŽëì§ íìží©ëë€.
ìì ìì êŽëŠ¬ë¥Œ ìí ì í ì í
ì í ì íì íë¡ê·žëë° ìžìŽìì ììì êŽëЬíë ê°ë ¥í ë구ì ëë€. ì í ì í ìì€í ìì ê° ìì(ì: íë¹íž)ì ì íí í ë² ì¬ì©íŽìŒ í©ëë€. ìŽ ìì±ì íë¹ížê° ë¶ì¡±íê³ ê°ì¹ ìë ìììž ìì íë¡ê·žëë°ìì í¹í ì ì©í©ëë€. ì í ì¬ì©ì ì ì©íšìŒë¡ìš ì í ìì€í ì íë¹ížì ì°ë°ì ìž ì¬ì¬ì© ëë íꞰ륌 ë°©ì§íì¬ ê³ì° ì ë°ì ê±žì³ ì¬ë°ë¥Žê² ì²ëЬëëë¡ ë³Žì¥í ì ììµëë€.
ì륌 ë€ìŽ, íë¹ížë¥Œ ìŽêž°ííê³ , íë€ë§ë ê²ìŽížë¥Œ ì ì©í ë€ì íë¹ížë¥Œ ìž¡ì íë ìì íë¡ë¥Œ ìê°íŽ ë³Žê² ìµëë€. ì í ì íìŽ ìë ìžìŽìì ì í ìì€í ì ê° ì°ì°ì ê±°ì¹ë©Žì íë¹ížì ìì ê¶ì ì¶ì í©ëë€. íë¡ê·žëšìŽ ìž¡ì ëêž° ì ì íë¹ížë¥Œ ë€ì ì¬ì©íë €ê³ í멎 ì í ê²ì¬êž°ê° ì€ë¥ë¥Œ ë°ììíµëë€. ìŽë¥Œ íµíŽ ëìŒí íë¹ížë¥Œ ë ë² ìž¡ì íë ê²ê³Œ ê°ì ìŒë°ì ìž ì€ì륌 ë°©ì§í ì ììŒë©°, ìŽë ì못ë 결곌륌 ìŽëí ì ììµëë€.
ì: ì í ì í ìì€í ìì íë¹íž í ë¹ ë° ìž¡ì
ì í ì íìŽ ìë ìì íë¡ê·žëë° ìžìŽì ëí ëšìíë 구묞ì ììíŽ ëŽ ìë€.
// ì í ì í QubitìŒë¡ íë¹íž í ë¹
let q: Qubit = allocate_qubit();
// íë¹ížì íë€ë§ë ê²ìŽíž ì ì©
let q' : Qubit = hadamard(q);
// íë¹ížë¥Œ ìž¡ì íê³ ê³ ì ì ìž ê²°ê³Œ(Int)륌 ì»ìµëë€.
let result: Int = measure(q');
// íë¹íž 'q''ë measure ì°ì°ì ìíŽ ìë¹ë©ëë€.
// ìŽ ìì ìŽíì 'q''륌 ì¬ì©íë €ê³ í멎 ì í ì€ë¥ê° ë°ìí©ëë€.
print(result);
ìŽ ììì `allocate_qubit` íšìë ì í ì í `Qubit`ì ê°ì§ íë¹ížë¥Œ ë°íí©ëë€. `hadamard` íšìë `Qubit`ì ì ë ¥ìŒë¡ ë°ì íë€ë§ë ê²ìŽížë¥Œ ì ì©í í ìë¡ìŽ `Qubit`ì ë°íí©ëë€. ë§ì°¬ê°ì§ë¡ `measure` íšìë `Qubit`ì ë°ì ìž¡ì 결곌륌 ëíëŽë ê³ ì ì ìž `Int`륌 ë°íí©ëë€. íµì¬ì ê° íšìê° ì ë ¥ `Qubit`ì ìë¹íê³ ìë¡ìŽ íë¹ížë¥Œ ìì±íê±°ë (`measure`ì 겜ì°ì²ëŒ) ìì í ìë¹íë€ë ê²ì ëë€. ìŽë íë¹ížê° ì íì ìŒë¡ ì¬ì©ëìŽ ìëíì§ ìì ì¬ì¬ì© ëë íꞰ륌 ë°©ì§í©ëë€.
ìì íë¡ ê²ìŠì ìí ì¢ ì ì í
ì¢ ì ì íì ì í ì íë³Žë€ íšì¬ ë ííë ¥ìŽ ë°ìŽë©ëë€. ìŽë¥Œ íµíŽ ì íìŽ ê°ì ì¢ ìëìŽ ë°ìŽí°ì ê³ì° ê°ì ë³µì¡í êŽê³ë¥Œ ìžìœë©í ì ììµëë€. ìì íë¡ê·žëë°ìì ì¢ ì ì íì ìì íë¡ ë° ìê³ ëŠ¬ìŠì ì íì±ì ê²ìŠíë ë° ì¬ì©í ì ììµëë€. ì륌 ë€ìŽ ì¢ ì ì íì ì¬ì©íì¬ ìì íë¡ê° í¹ì ëšìŒ ë³íì 구ííê±°ë ìì ìê³ ëŠ¬ìŠìŽ í¹ì ì±ë¥ 볎ì¥ì 충족íëì§ íìží ì ììµëë€.
ìì ížëЬì ë³í(QFT)ì 구ííë ìì íë¡ë¥Œ ìê°íŽ ë³Žê² ìµëë€. QFTë ìë§ì ìì© íë¡ê·žëšìŽ ìë ìì 컎íší ì Ʞ볞 ìê³ ëŠ¬ìŠì ëë€. ì¢ ì ì íì ì¬ì©í멎 QFT íë¡ê° 구ííŽìŒ íë ì íí ëšìŒ ë³íì ì§ì í ì ììµëë€. ê·žë° ë€ì ì í ê²ì¬êž°ë íë¡ê° ìŽ ì¬ìì 충족íëì§ íìžíì¬ ì íì±ì ëí ëì ìì€ì ì 뢰ë륌 ì ê³µí ì ììµëë€.
ì: ì¢ ì ì íì ì¬ì©íì¬ ìì ížëЬì ë³í(QFT) íë¡ ê²ìŠ
n* íë¹ížì ëí QFT íë¡ê° ì¬ë°ë¥Žê² 구íëìëì§ íìžíë €ë ìë늬ì€ë¥Œ ê³ ë €íŽ ë³Žê² ìµëë€. QFTì ìì ëšìŒ ë³íì 캡ì²íë ì¢ ì ì íì ì ìí ì ììµëë€.
// n íë¹ížìì ëšìŒ ë³íì ëíëŽë ì í
type UnitaryTransformation(n: Int) = Matrix[Complex, 2^n, 2^n];
// QFT ëšìŒ ë³íì ëíëŽë ì¢
ì ì í
type QFTUnitary(n: Int) = UnitaryTransformation(n) where UnitaryTransformation(n) == QFTMatrix(n);
// n íë¹ížì QFT ëšìŒ íë ¬ì 구ì±íë íšì
function QFTMatrix(n: Int): Matrix[Complex, 2^n, 2^n] {
// 구í ìžë¶ ì 볎...
}
// n íë¹ížì QFT íë¡ë¥Œ 구ííë íšì
function qft_circuit(n: Int, qubits: Qubit[n]): Qubit[n] {
// íë¡ êµ¬í...
}
// ê²ìŠ: íë¡ë QFT ëšìŒì ìì±íŽìŒ í©ëë€.
assert qft_circuit(n, qubits) : QFTUnitary(n);
ìŽ ììì `UnitaryTransformation(n)`ì *n* íë¹ížìì ëšìŒ ë³íì ì íì ëíë ëë€. `QFTUnitary(n)`ì ëšìŒ ë³íìŽ `QFTMatrix(n)` íšìì ìíŽ ê³ì°ëë *n* íë¹ížì ëí QFT íë ¬ê³Œ ê°ììŒ íšì ì§ì íë ì¢ ì ì íì ëë€. `qft_circuit(n, qubits)` íšìë QFT íë¡ë¥Œ 구íí©ëë€. `assert` 묞ì ì¢ ì ì í `QFTUnitary(n)`ì ì¬ì©íì¬ íë¡ê° ì¬ë°ë¥ž ëšìŒ ë³íì ìì±íëì§ íìží©ëë€. ì í ê²ì¬êž°ë íë¡ê° ìŽ ì ìœ ì¡°ê±Žì 충족íëì§ ìŠëª íêž° ìíŽ êž°íž ì€í ëë êž°í ê³ êž êž°ì ì ìííŽìŒ í©ëë€.
ìì íë¡ê·žëë° ìžìŽ ë° ì í ìì€í
ì¬ë¬ ìì íë¡ê·žëë° ìžìŽê° ë±ì¥íê³ ììŒë©° ê° ìžìŽë ì í ìì€í ë° ìžìŽ ì€ê³ì ëí ê³ ì í ì ê·Œ ë°©ìì ê°ì§ê³ ììµëë€. ëª ê°ì§ 죌목í ë§í ìë ë€ì곌 ê°ìµëë€.
- Q# (Microsoft): Q#ì Microsoftê° Quantum Development Kit(QDK)ì ìŒë¶ë¡ ê°ë°í ìì íë¡ê·žëë°ì ìí ëë©ìžë³ ìžìŽì ëë€. ìŒë°ì ìž íë¡ê·žëë° ì€ë¥ë¥Œ ë°©ì§íë ê°ë ¥í ì ì ì í ìì€í ìŽ í¹ì§ì ëë€. Q#ì ë³µì¡í ìì ìê³ ëŠ¬ìŠì 구ì¶íë ë° íìì ìž íë¹íž ë³ì¹ ì§ì ë° ì ìŽë ì°ì°ê³Œ ê°ì êž°ë¥ì ì§ìí©ëë€.
- Quipper (ì¥ì€íŒë ëíêµ): Quipperë íë¡ ìì± ë° ì¡°ìì ê°ì¡°íë íšìí ìì íë¡ê·žëë° ìžìŽì ëë€. ê³ ì°š íšì ë° ëë€ ííìì ì§ìíì¬ ë³µì¡í ìì íë¡ë¥Œ ì€ëª íë ë° ì í©í©ëë€. Quipperë íë¹ížì ì°ê²°ì ì¶ì íì¬ íë¡ê° ì íì±ëëë¡ ëë ì í ìì€í ì ì¬ì©í©ëë€.
- Silq (ETH Zurich): Silqë ìì íê³ ííë ¥ìŽ íë¶íëë¡ ì€ê³ë ê³ êž ìì íë¡ê·žëë° ìžìŽì ëë€. ì íì±ì ì ì©íê³ íë¹íž ë³µì 륌 ë°©ì§íë ì í ìì€í ìŽ í¹ì§ì ëë€. Silqë ìì íë¡ê·žëë°ì ë ì§êŽì ìŽê³ ì¬ì©ì ì¹íì ìž ìží°íìŽì€ë¥Œ ì ê³µíì¬ ìì ìê³ ëŠ¬ìŠì ê°ë° ë° ëë²ê¹ ì ë ìœê² ë§ëë ê²ì 목íë¡ í©ëë€.
- PyZX (ì¥ì€íŒë): ì 첎 êž°ë¥ì ê°ì¶ íë¡ê·žëë° ìžìŽë ìëì§ë§ PyZXë ZX 믞ì ë¶íì ì¬ì©íì¬ ìì íë¡ë¥Œ ê·žëíœ ë°©ììŒë¡ ì¡°ìí ì ìë Python ëŒìŽëžë¬ëЬì ëë€. ZX 믞ì ë¶íì ìì íë¡ë¥Œ ëšìííê³ ìµì ííë ê°ë ¥í ë구ì ëë€. PyZXë Ʞ볞 ì í ê²ì¬ë¥Œ ìíŽ Pythonì ì í ìì€í ì ììì ìŒë¡ ì¬ì©íì§ë§ 죌ì ìŽì ì ìì íë¡ì ëí ë€ìŽìŽê·žëš ì¶ë¡ ì ëë€.
- PennyLane (Xanadu): PennyLaneì ìì ëšžì ë¬ë, ìì íí ë° ìì 컎íší ì ìí íë«íŒ ê° Python ëŒìŽëžë¬ëЬì ëë€. ì¬ì©ìê° ì 겜ë§ê³Œ ëìŒí ë°©ììŒë¡ ìì 컎íší°ë¥Œ íë¡ê·žëë°í ì ììµëë€. PennyLaneì Pythonì íìŽíì í¬ê² ì졎íì§ë§ íë°í ì°êµ¬ ë¶ìŒì ëë€.
- Cirq (Google): Cirqë ìì íë¡ë¥Œ ìì±, ì¡°ì ë° ìµì íí ë€ì ìì 컎íší° ë° ìì ì뮬ë ìŽí°ìì ì€ííêž° ìí Python ëŒìŽëžë¬ëЬì ëë€. Cirqë ëí Pythonì íìŽíì ì졎íë©° ì íì±ì ì ì©íì§ ììµëë€.
곌ì ë° í¥í ë°©í¥
ê³ êž ì í ìì€í ì ìì íë¡ê·žëë°ì ìë¹í ìŽì ì ì ê³µíì§ë§ íŽê²°íŽìŒ í ëª ê°ì§ 곌ì ë ììµëë€. í ê°ì§ 곌ì ë ìì ìíì ëìì€ë¥Œ íšê³Œì ìŒë¡ í¬ì°©í ì ìë ì í ìì€í ì ì€ê³íê³ êµ¬ííë ë³µì¡ì±ì ëë€. ìì ê³ì°ì ì¢ ì¢ ë³µì¡í ìíì ì°ì°ê³Œ íë¥ ì ëìì í¬íšíë©°, ìŽë¥Œ ì í ìì€í ìŒë¡ íííêž° ìŽë €ìž ì ììµëë€.
ë ë€ë¥ž 곌ì ë ì í ê²ì¬ì êŽë šë ì±ë¥ ì€ë²í€ëì ëë€. ì í ê²ì¬ë ìì íë¡ê·žëšì 컎íìŒ ë° ì€íì ìë¹í ì€ë²í€ë륌 ì¶ê°í ì ììµëë€. ííë ¥ìŽ íë¶íê³ íšìšì ìž ì í ìì€í ì ê°ë°íì¬ ì±ë¥ì 믞ì¹ë ìí¥ì ìµìííë ê²ìŽ ì€ìí©ëë€. ì í ì¶ë¡ ë° ëšê³ë³ ê³ì°ê³Œ ê°ì ê³ êž êž°ì ì ì í ê²ì¬ì ì€ë²í€ë륌 ì€ìŽë ë° ëììŽ ë ì ììµëë€.
ìŽ ë¶ìŒì í¥í ì°êµ¬ ë°©í¥ì ë€ì곌 ê°ìµëë€.
- ë ííë ¥ìŽ íë¶í ì í ìì€í ê°ë°: ìœí ìížë¡íŒ ë° ìì ìêŽ êŽê³ì ê°ì ë ë³µì¡í ìì ìì±ì 캡ì²í ì ìë ìë¡ìŽ ì í ìì€í êž°ë¥ì í구í©ëë€.
- ì í ì¶ë¡ ìê³ ëŠ¬ìŠ ê°ì : ìì íë¡ê·žëšìì ì íì ì¶ë¡ íêž° ìí ë³Žë€ íšìšì ìž ìê³ ëŠ¬ìŠì ê°ë°íì¬ ëª ìì ì í 죌ìì íìì±ì ì€ì ëë€.
- ì í ìì€í ì ìì 컎íìŒë¬ì íµí©: ìì íë¡ë¥Œ ìµì ííê³ ì±ë¥ì í¥ììí€êž° ìíŽ ì í ê²ì¬ë¥Œ ìì 컎íìŒ êž°ì 곌 ê²°í©í©ëë€.
- ì¬ì©ì ì¹íì ìž ìì íë¡ê·žëë° ìžìŽ ìì±: ê°ë ¥íê³ ì¬ì©íêž° ì¬ìŽ ìì íë¡ê·žëë° ìžìŽë¥Œ ì€ê³íì¬ ë ë§ì ì²ì€ìŽ ìì íë¡ê·žëë°ì ì ê·Œí ì ìëë¡ í©ëë€.
ê²°ë¡
ê³ êž ì í ìì€í ì ìì ì ìŽê³ íì¥ ê°ë¥í ìì ìíížìšìŽë¥Œ 구ì¶íë ë° ì€ìí êµ¬ì± ììì ëë€. ìì íë¡ê·žëšì ë ì격í ì ìœ ì¡°ê±Žì ì ì©íšìŒë¡ìš ì í ìì€í ì ìŒë°ì ìž íë¡ê·žëë° ì€ë¥ë¥Œ ë°©ì§íê³ ìì ìœëì ì ë°ì ìž íì§ì í¥ììí¬ ì ììµëë€. ìì 컎íší ìŽ ê³ì ë°ì íšì ë°ëŒ ì êµí ì í ìì€í ì ê°ë°ì ë³µì¡íê³ ê°ë ¥í ìì ì í늬ìŒìŽì ì ìì±íë ë° ì ì ë ì€ìí ìí ì í ê²ì ëë€. ì í ì íì íµíŽ íë¹íž ì€ì©ì ë°©ì§íë ê²ë¶í° ì¢ ì ì íì ì¬ì©íì¬ ìì íë¡ì ì íì±ì ê²ìŠíë ê²ê¹ì§ ì í ìì ì±ì ìì ìíížìšìŽ ìì ì±ìŒë¡ ê°ë ì€ìí 겜ë¡ë¥Œ ì ê³µí©ëë€. ìŽë¡ ì°êµ¬ìì ë€ìí íë¡ê·žëë° ìžìŽ ë° ìì íë«íŒì ê±žì³ ì€ì©ì ìž ìì© íë¡ê·žëšìŒë¡ì ì¬ì ì ìì íë¡ê·žëë°ìŽ ê°ë ¥íê³ ë³žì§ì ìŒë¡ ì 뢰í ì ìë 믞ë륌 목íë¡ ê³ìë©ëë€.